"""
    sys模块主要负责与Python解释器进行交互，该模块提供了一系列用于控制Python运行环境的函数和变量。

"""
import sys
from traceback import print_tb

# 查看sys的内容
print(dir(sys))

if __name__ == '__main__':
    args = sys.argv
    # print(args)
    # print(args[1])

print(sys.version)

# 平台
print(sys.platform)

# 返回模块的搜索路径列表
print(sys.path)

# maxsize 返回支持的最大整数值。
print(sys.maxsize) # 9223372036854775807

# maxunicode
print(sys.maxunicode) # 1114111

print(sys.copyright)

# 以字典类型返回系统导入的模块
print(sys.modules)

# 返回Python 解释器所在路径
print(sys.executable)

# stdout 标准输出
print(sys.stdout.write('Hi' + '\n'))
print('Hi')

# s1 = input()
# s2 = sys.stdin.readline()
# print(s1)
# print(s2)

# stderr 错误输出
sys.stderr.write('this is a error message')

# exit() 退出当前程序

print('\n=============================================\n')

print(sys.getdefaultencoding())
print(sys.getrefcount('123456'))
print(sys.getrecursionlimit()) # 支持的递归深度
print(sys.getsizeof('abcde')) # 以字节为单位返回对象的大小
sys.setswitchinterval(1)
print(sys.getswitchinterval())

print('\n=============================================\n')

"""
    argparse 模块主要用于处理 Python 命令行参数和选项，程序定义好所需参数后，该模块会通过 sys.argv 解析出那些参数；除此之外，
    argparse 模块还会自动生成帮助和使用手册，并在用户给程序传入无效参数时报出错误信息。使用 argparse 模块，我们可以轻松的编写
    出用户友好的命令行接口。
    
    name or flags：一个命名或者一个选项字符串的列表，例如：-f，–foo
    action：当参数在命令行中出现时使用的动作基本类型
    nargs：命令行参数应当消耗的数目
    const：被一些 action 和 nargs 选择所需求的常数
    default：当参数未在命令行中出现时使用的值
    type：命令行参数应当被转换成的类型
    choices：可用的参数的容器
    required：此命令行选项是否可省略
    help：一个选项作用的简单描述
    metavar：在使用方法消息中使用的参数值示例
    dest：被添加到 parse_args() 所返回对象上的属性名
"""
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--name','-n',dest='rname',required=True, type=int, help='increase output name')
# 解析
args = parser.parse_args()
name = args.rname
print("Hello", name)